A document management system must be able both to store documents and to take action to manipulate a document. Traditionally the features of the system of storing a document and taking action to manipulate a document are totally separate functions. Documents are stored in a format compatible with the database program used in a repository. Actions are accomplished by a process, typically written as part of the code implementing the management system.
The division of functionality between document storage and functions designed to accomplish actions leads to a requirement for signalling between documents and functions, internal program complexity, and other undesirable results.